package com.code.test.dance;

/**
 * https://developer.huawei.com/consumer/cn/forum/topic/0201971961931650078
 * 阿拉伯数字人民币转换为中文大写
 * <p>
 * 考试题目和要点：
 * <p>
 * 1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。
 * <p>
 * 2、中文大写金额数字到“元”为止的，在“元”之后，应写“整字，如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。
 * <p>
 * 3、阿拉伯数字中间有“0”时，中文大写要写“零”字，阿拉伯数字中间连续有几个“0”时，中文大写金额中间只写一个“零”字，如6007.14，应写成“人民币陆仟零柒元壹角肆分”。
 * <p>
 * 4、10应写作“拾”，100应写作“壹佰”。例如，1010.00应写作“人民币壹仟零拾元整”，110.00应写作“人民币壹佰拾元整”
 * <p>
 * 5、十万以上的数字接千不用加“零”，例如，30105000.00应写作“人民币叁仟零拾万伍仟元整”
 * <p>
 * 输入描述： 输入一个double数
 * <p>
 * 输出描述： 输出人民币格式
 */
public class RMB2Chinese {

    static String[] shuzi = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 就是下标对应，数字按照顺序排列
    // 定义一个单位的数组
    static String[] danwei = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "十"};

    public static void main(String[] args) {
        String output = toChinese(676778.53);
        System.out.println(output);
    }

    /**
     * https://blog.csdn.net/lx1315998513/article/details/105195581
     */
    public static String toChinese(double rmb) {
        String string = rmb + "";// 无论什么类型+""结果都是字符串，因为""就是字符串，+了之后就是强转

        String[] split = string.split("\\.");
        String dotPre = split[0];
        String dotAfter = split[1];
        // Stinrg.valueOf(i)//静态方法转换i

        // 进行拆字，toCharArray();拆分成一个个字符，返回一个char数组
        char[] cs = dotPre.toCharArray();

        // 第五步，开始转换数字
        String printStr = "";
        for (int j = 0; j < cs.length; j++) {
            // 转换类型，把char类型抓换为int
//			cahr 类型转换为int，根据ASCII
//			char类型是0的话，int，就是48
//			char类型是1的话，int，就是49，相差48
            int index = cs[j] - 48;
//            if (shuzi[index] == "壹" && cs.length == 6) {
//                shuzi[index] = "";
//                printStr = printStr + shuzi[index];
//            } else {
//                printStr = printStr + shuzi[index];
//            }
            printStr = printStr + shuzi[index];

            // 9999--玖仟玖佰玖拾玖
            // 数字长度，就相当于我们的单位
            printStr = printStr + danwei[cs.length - j - 1];
//			System.out.print(danwei[cs.length - j - 1]);
            // 1688-- 去零 -100200 120000思考。

        }

        if (dotAfter.length() > 0) {
            //只考虑角和分
            StringBuilder sb = new StringBuilder();
            int jiao = Integer.parseInt(dotAfter.substring(0, 1));
            int fen = Integer.parseInt(dotAfter.substring(1, 2));
            if (jiao != 0) {
                sb.append(shuzi[jiao]);
                sb.append('角');
            }
            if (fen != 0) {
                sb.append(shuzi[fen]);
                sb.append('分');
            }

            printStr = printStr + sb.toString();
        }


        return printStr;
    }
}
